/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gui;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import com.beans.AppelDoffre;
import com.beans.Projets;
import com.beans.Users;
import com.dao.AppelDoffreDao;
import com.metier.AppelDoffreMetier;
import com.metier.UsersMetier;

/**
 * 
 * @author moussa
 */
public class PanelAppelDoffre extends javax.swing.JPanel implements MouseListener {

	private static final long serialVersionUID = 1L;
	private javax.swing.JButton boutonAjouter;
	private javax.swing.JButton boutonImprimer;
	private javax.swing.JButton boutonModifier;
	private javax.swing.JButton boutonRechercher;
	private javax.swing.JButton boutonSupprimer;
	private javax.swing.JLabel jLabel1, textLabel;
	private JButton boutonAnnulers;
	private JButton bouttonRetour;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JPanel panelBoutons, panelBouton1;
	private javax.swing.JPanel panelbas;
	private JTextField textRechercher;
	private javax.swing.JPanel panelhaut;
	private JLabel labelDateDebut, labelDateFin;

	private com.toedter.calendar.JDateChooser dateDebutProjet;
	private com.toedter.calendar.JDateChooser dateFinProjet;
	DefaultTableModel dtm;
	AppelDoffre appelDoffre, appelDoffreToModif;
	AppelDoffreMetier appelDoffreMetier;
	Object data;

	JTable tableListeAppelDoffre;

	// End of variables declaration

	/**
	 * Creates new form PanelConsultant
	 */
	public PanelAppelDoffre() {

		appelDoffreMetier = new AppelDoffreMetier();
		appelDoffre = new AppelDoffre();
		appelDoffreToModif = new AppelDoffre();
		initComponents();
		
/* Mouselistener permet d'écouter les lignes du tableau
 *  la méthode d'activation des boutons est définie en bas de la  classe	*/	
		
		getTableListeAppelDoffre().addMouseListener(this);
		boutonSupprimer.setEnabled(false);
		boutonModifier.setEnabled(false);
	}

	private void initComponents() {

		panelhaut = new javax.swing.JPanel();
		jLabel1 = new javax.swing.JLabel();
		panelbas = new javax.swing.JPanel();
		panelBoutons = new javax.swing.JPanel();
		panelBouton1 = new JPanel();
		labelDateDebut = new JLabel("DATE DEBUT");
		labelDateFin = new JLabel("DATE FIN");
		labelDateDebut.setFont(new java.awt.Font("Verdana", 3, 12));
		labelDateFin.setFont(new java.awt.Font("Verdana", 3, 12));
		labelDateDebut.setForeground(new java.awt.Color(255, 255, 255));
		labelDateFin.setForeground(new java.awt.Color(255, 255, 255));

		boutonAjouter = new javax.swing.JButton();
		boutonSupprimer = new javax.swing.JButton();
		boutonModifier = new javax.swing.JButton();
		boutonImprimer = new javax.swing.JButton();
		boutonImprimer.setVisible(false);
		boutonRechercher = new javax.swing.JButton();
		boutonAnnulers=new javax.swing.JButton();
		boutonAnnulers.setFont(new java.awt.Font("Verdana", 3, 14)); // NOI18N
		boutonAnnulers.setText("Annuler");

		bouttonRetour = new javax.swing.JButton();
		jLabel2 = new javax.swing.JLabel();
		textLabel = new JLabel("");
		textRechercher = new JTextField();
		dateDebutProjet = new com.toedter.calendar.JDateChooser();
		dateFinProjet = new com.toedter.calendar.JDateChooser();

		setBackground(new java.awt.Color(128, 130, 133));
		setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1, 1,
				new java.awt.Color(102, 153, 255)));
		setFont(new java.awt.Font("Verdana", 3, 14)); // NOI18N
		setMaximumSize(new java.awt.Dimension(1050, 550));
		setMinimumSize(new java.awt.Dimension(1050, 550));
		setLayout(new java.awt.BorderLayout());
		panelBoutons.setLayout(new BorderLayout());

		panelhaut.setBackground(new java.awt.Color(128, 130, 133));
		panelhaut.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1,
				1, 1, new java.awt.Color(103, 153, 255)));
		panelhaut.setPreferredSize(new java.awt.Dimension(1050, 75));

		jLabel1.setIcon(new javax.swing.ImageIcon(
				"src/main/java/com/photos/Gestion des appels d'offre.jpg")); // NOI18N

		panelbas.setBackground(new java.awt.Color(128, 130, 133));
		panelbas.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 1, 1,
				1, new java.awt.Color(102, 153, 255)));
		panelbas.setMaximumSize(new java.awt.Dimension(1050, 375));
		panelbas.setMinimumSize(new java.awt.Dimension(1050, 375));
		panelbas.setPreferredSize(new java.awt.Dimension(1056, 410));
		panelbas.setLayout(new GridLayout(1, 1));

		panelBoutons.setPreferredSize(new java.awt.Dimension(742, 35));
		panelBouton1.setBackground(new java.awt.Color(128, 130, 133));
		panelBoutons.setBackground(new java.awt.Color(128, 130, 133));
		panelBoutons.setBorder(javax.swing.BorderFactory.createMatteBorder(1,
				1, 1, 1, new java.awt.Color(103, 153, 255)));
		panelBoutons.setMaximumSize(new java.awt.Dimension(1050, 50));
		panelBoutons.setMinimumSize(new java.awt.Dimension(1050, 50));
		panelBoutons.setPreferredSize(new java.awt.Dimension(1050, 40));
		bouttonRetour.setFont(new java.awt.Font("Verdana", 3, 14)); // NOI18N
		bouttonRetour.setText("Retour");
		bouttonRetour.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				panelbas.removeAll();
				jLabel2.setVisible(true);
				boutonImprimer.setVisible(false);
				boutonModifier.setVisible(true);
				boutonRechercher.setVisible(true);
				boutonSupprimer.setVisible(true);
				textRechercher.setVisible(true);
				boutonAjouter.setVisible(true);
				labelDateDebut.setVisible(true);
				labelDateFin.setVisible(true);
				dateDebutProjet.setVisible(true);
				dateFinProjet.setVisible(true);

				panelbas.add(new JScrollPane(tableListeAppelDoffre),
						BorderLayout.CENTER);
				validate();

			}
		});

		

		boutonAnnulers.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				panelbas.removeAll();
				jLabel2.setVisible(true);
				boutonImprimer.setVisible(false);
				boutonModifier.setVisible(true);
				boutonRechercher.setVisible(true);
				boutonSupprimer.setVisible(true);
				textRechercher.setVisible(true);
				boutonAjouter.setVisible(true);
				textRechercher.setVisible(true);
				labelDateDebut.setVisible(true);
				labelDateFin.setVisible(true);
				dateDebutProjet.setVisible(true);
				dateFinProjet.setVisible(true);

				panelbas.add(new JScrollPane(tableListeAppelDoffre),
						BorderLayout.CENTER);
				validate();

			}
		});

		boutonModifier.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub

				int ligne = getTableListeAppelDoffre().getSelectedRow();
				if (ligne == -1) {
					JOptionPane.showMessageDialog(null,
							"veuillez selectionner un utilisteur d'abord!!!!");
				} else {

					chargeappelDoffreModifier();

				}

			}
		});

		boutonAjouter.setIcon(new javax.swing.ImageIcon(
				"src/main/java/com/photos/add16.png"));
		boutonAjouter.setToolTipText("Ajouter");
		boutonAjouter.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				jLabel2.setVisible(false);
				boutonImprimer.setVisible(false);
				boutonModifier.setVisible(false);
				boutonRechercher.setVisible(false);
				boutonSupprimer.setVisible(false);
				boutonAjouter.setVisible(false);
				textRechercher.setVisible(false);
				boutonAjouter.setVisible(false);
				textRechercher.setVisible(false);
				labelDateDebut.setVisible(false);
				labelDateFin.setVisible(false);
				dateDebutProjet.setVisible(false);
				dateFinProjet.setVisible(false);
				panelbas.removeAll();
				PanelAjouterAppelOffre ajoutAppelOffre = new PanelAjouterAppelOffre(
						bouttonRetour);
				panelbas.add(ajoutAppelOffre, BorderLayout.SOUTH);
				validate();
				//
			}
		});

		boutonSupprimer.setIcon(new javax.swing.ImageIcon(
				"src/main/java/com/photos/supprimer.gif")); // NOI18N
		boutonSupprimer.setToolTipText("Supprimer");
		boutonSupprimer.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				final int[] selectionSupprimer = getTableListeAppelDoffre()
						.getSelectedRows();

				if (selectionSupprimer.length == 0) {
					JOptionPane.showMessageDialog(null,
							"veuillez selectionner un projet d'abord!!!!");
				} else {
					if (JOptionPane.showConfirmDialog(getFrame(),
							"Voulez-vous vraiment supprimer ?", "Information",
							JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
						testDeleteAppelDoffre();

					}

				}
			}
		});

		boutonModifier.setIcon(new javax.swing.ImageIcon(
				"src/main/java/com/photos/modifier.gif")); // NOI18N
		boutonModifier.setToolTipText("Modifier");

		boutonImprimer.setIcon(new javax.swing.ImageIcon(
				"src/main/java/com/photos/imprimer.gif")); // NOI18N
		boutonImprimer.setToolTipText("Imprimer");

		boutonRechercher.setIcon(new javax.swing.ImageIcon(
				"src/main/java/com/photos/recherchermod.png")); // NOI18N
		boutonRechercher.setToolTipText("Rechercher");
		boutonRechercher.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {

				testFindAppelDoffre();
				boutonImprimer.setVisible(false);
				boutonModifier.setVisible(false);
				boutonRechercher.setVisible(false);
				boutonSupprimer.setVisible(false);
				textRechercher.setVisible(false);
				labelDateDebut.setVisible(false);
				labelDateFin.setVisible(false);
				dateDebutProjet.setVisible(false);
				dateFinProjet.setVisible(false);
				boutonAjouter.setVisible(false);

			}
		});

		jLabel2.setFont(new java.awt.Font("Verdana", 3, 14)); // NOI18N

		panelhaut.add(jLabel1);

		panelBouton1.add(boutonAjouter);
		panelBouton1.add(boutonSupprimer);
		panelBouton1.add(boutonModifier);
		panelBouton1.add(boutonImprimer);
		panelBouton1.add(boutonRechercher);
		panelBouton1.add(textRechercher);
		panelBouton1.add(labelDateDebut);
		panelBouton1.add(dateDebutProjet);
		panelBouton1.add(labelDateFin);
		panelBouton1.add(dateFinProjet);
		textRechercher.setPreferredSize(new Dimension(100, 27));
		textRechercher.setText("Reference");
		panelBouton1.add(textLabel);
		// panelBouton1.add(jLabel2, BorderLayout.CENTER);
		panelBoutons.add(panelBouton1, BorderLayout.WEST);

		add(panelBoutons, java.awt.BorderLayout.CENTER);
		add(panelhaut, BorderLayout.NORTH);
		tableauListeAppelDofre();// on fait appel à cette méthode pour le
									// chargement
		// du tableau
		panelbas.add(new JScrollPane(tableListeAppelDoffre),
				BorderLayout.CENTER);

		add(panelbas, BorderLayout.SOUTH);
		boutonRechercher.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {

			}

		});

		boutonSupprimer.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub

			}
		});

	}

	// methode qui permet de charger la liste des appels doffre dans un JTable

	public void tableauListeAppelDofre() {

		String[] entetes = { "Numero", "Referencee", "Etat", "Commentaire",
				"Description" };

		List<AppelDoffre> listAppelDoffre = appelDoffreMetier
				.chargerAllAppelDoffre();
		int nombreLigne = listAppelDoffre.size();
		System.out.println("taille de la liste" + listAppelDoffre.size());
		Object data[][] = new Object[nombreLigne][5];

		for (int i = 0; i < nombreLigne; i++) {
			AppelDoffre appelDoffre = new AppelDoffre();

			appelDoffre = listAppelDoffre.get(i);

			data[i][0] = appelDoffre.getAoNumero();

			data[i][1] = appelDoffre.getAoRef();
			data[i][2] = appelDoffre.getAoEtat();

			data[i][3] = appelDoffre.getAoCommentaire();

			data[i][4] = appelDoffre.getAoDesc();
		}
		dtm = new DefaultTableModel(data, entetes);
		tableListeAppelDoffre = new JTable(dtm);

	}

	public JPanel getFrame() {

		return this;
	}

	/**
	 * @return the tableListeAppelDoffre
	 */
	public JTable getTableListeAppelDoffre() {
		return tableListeAppelDoffre;
	}

	/**
	 * @param tableListeAppelDoffre
	 *            the tableListeAppelDoffre to set
	 */
	public void setTableListeAppelDoffre(JTable tableListeAppelDoffre) {
		this.tableListeAppelDoffre = tableListeAppelDoffre;
	}

	public void chargeappelDoffreModifier() {
		int ligneSelectionner = getTableListeAppelDoffre().getSelectedRow();
		System.out.println("voici la ligne selectionné " + ligneSelectionner);
		if (ligneSelectionner == -1) {
			JOptionPane.showMessageDialog(null,
					"veuillez selectionner un utilisteur d'abord!!!!");

		} else {
			AppelDoffreMetier appeldoffreMetiers = new AppelDoffreMetier();
			// AppelDoffre appeldoffreModif = new AppelDoffre();
			// on recupére les champs

			// long aoleadrecuper =Integer.parseInt(aoleadr);

			// long aooppertiRecuperer=Integer.parseInt(aoop);
			// String password = userModif.getUsrPasswd();

			String numeroRecuperer = (String) getTableListeAppelDoffre()
					.getValueAt(ligneSelectionner, 0);
			String aorefRecuperer = (String) getTableListeAppelDoffre()
					.getValueAt(ligneSelectionner, 1);
			String aoEatRecuperer = (String) getTableListeAppelDoffre()
					.getValueAt(ligneSelectionner, 2);
			String aocommentaireRecuperer = (String) getTableListeAppelDoffre()
					.getValueAt(ligneSelectionner, 3);
			String aodesrecuper = (String) getTableListeAppelDoffre()
					.getValueAt(ligneSelectionner, 4);
			System.out.println("voici l'état recupéré  " + aorefRecuperer);

			appelDoffreToModif = appelDoffreMetier
					.findAppelDoffreByReference(aorefRecuperer);

			Double aocommisionRecuperer = appelDoffreToModif.getAoComission();

			System.out.println("voici la commission  " + aocommisionRecuperer);

			// on charge les champs dans le panel PanelModifierConsultant

			Double aooffrefinanceRecuperer = appelDoffreToModif
					.getAoOffreFinanc();
			Double aoseilTechniRecupererer = appelDoffreToModif
					.getAoOffreTech();
			Double offretechrecuper = appelDoffreToModif.getAoOffreTech();
			// Double leadrecuperer = appelDoffreToModif.getAoIdLead();

			// pan.getComboBoxEtat().addItem(item);( aoEatRecuperer);
			PanelModifierAppelOffre pan = new PanelModifierAppelOffre(
					boutonAnnulers);
			pan.getTextFieldNom().setText(numeroRecuperer);
			//
			pan.setRefToModifi(aorefRecuperer);
			pan.getjTextFieldReference().setText(aorefRecuperer);
			pan.getjTextAreaCommentaire().setText(aocommentaireRecuperer);
			pan.getjTextAreaDescription().setText(aodesrecuper);
			pan.getTextFieldOpportinuite().setText(
					appelDoffreToModif.getAoOpportunit() + "");
			if (aocommisionRecuperer != null) {
				pan.getTextFieldCommission().setText(aocommisionRecuperer + "");
			}
			if (aooffrefinanceRecuperer != null)
				pan.getjTextField2().setText(aooffrefinanceRecuperer + "");
			if (aoseilTechniRecupererer != null)
				pan.getTextFieldOOffreTechnique().setText(
						aoseilTechniRecupererer + "");
			if (offretechrecuper != null)
				pan.getjTextFieldSeuilTechnique()
						.setText(offretechrecuper + "");
			pan.getjTextFieldLead().setText(
					appelDoffreToModif.getAoIdLead() + "");
			pan.getjDateChooserDateDelib().setDate(
					appelDoffreToModif.getAoDateDelib());
			pan.getjDateChooserDateDepFin().setDate(
					appelDoffreToModif.getAoDateDepFin());
			pan.getjDateChooserDateDepTech().setDate(
					appelDoffreToModif.getAoDateDepTech());
			pan.getjDateChooserDateLimite().setDate(
					appelDoffreToModif.getAoDateLine());
			pan.getDateAchat().setDate(appelDoffreToModif.getAoDateAchat());
			pan.getDateCreate().setDate(appelDoffreToModif.getAoDateCreate());

			// user = usersMetier.findUserByLogin(loginRecuperer );
			// users.updateUsers(user);

			panelbas.removeAll();
			boutonAjouter.setVisible(false);
			boutonSupprimer.setVisible(false);
			boutonImprimer.setVisible(false);
			boutonRechercher.setVisible(false);
			boutonModifier.setVisible(false);
			textRechercher.setVisible(false);
			labelDateDebut.setVisible(false);
			labelDateFin.setVisible(false);
			dateDebutProjet.setVisible(false);
			dateFinProjet.setVisible(false);
			// pan.setLoginUserToModifi(loginRecuperer);
			panelbas.add(pan, BorderLayout.SOUTH);
			validate();

		}
	}

	public void testDeleteAppelDoffre() {

		// on recupére le nombre de ligne selectionné pour la suppression

		final int[] selection = getTableListeAppelDoffre().getSelectedRows();
		System.out.println("voici la taille selectionné " + selection.length);
		// test pour voir si la selection est vide
		if (selection.length == 0) {
			JOptionPane.showMessageDialog(null,
					"veuillez selectionner un A.O d'abord!!!!");

		} else {// si la selection n'est pas vide
			int taille = selection.length;

			for (int i = 0; i < taille; i++) {
				int index = selection[i];

				String aoReference = (String) getTableListeAppelDoffre()
						.getValueAt(index, 1);

				AppelDoffre aoSupprimer = appelDoffreMetier
						.findAppelDoffreByReference(aoReference);

				appelDoffreMetier.testDelete(aoSupprimer);
				dtm.removeRow(index);

			}

		}
	}

	/**
	 * @return the panelbas
	 */
	public javax.swing.JPanel getPanelbas() {
		return panelbas;
	}

	/**
	 * @param panelbas
	 *            the panelbas to set
	 */
	public void setPanelbas(javax.swing.JPanel panelbas) {
		this.panelbas = panelbas;
	}

	public void testFindAppelDoffre() {

		appelDoffre = appelDoffreMetier
				.findAppelDoffreByReference(textRechercher.getText());

		jLabel2.setVisible(false);
		boutonImprimer.setEnabled(false);
		boutonModifier.setEnabled(false);
		boutonAjouter.setEnabled(false);
		boutonSupprimer.setEnabled(false);

		PanelModifierAppelOffre pan = new PanelModifierAppelOffre(
				boutonAnnulers);
		pan.getButtonValider().setVisible(false);
		boutonAnnulers.setText("RETOUR");
         String com=new DecimalFormat("0").format(appelDoffre.getAoComission());
		pan.getTextFieldCommission().setText(com);
		pan.getTextFieldNom().setText(appelDoffre.getAoNumero());
		pan.getTextFieldOOffreTechnique().setText(
				appelDoffre.getAoOffreTech() + "");
		pan.getTextFieldOpportinuite().setText(appelDoffre.getAoOpportunit());
		pan.getjDateChooserDateDelib().setDate(appelDoffre.getAoDateDelib());
		pan.getjDateChooserDateDepFin().setDate(appelDoffre.getAoDateDepFin());
		pan.getjDateChooserDateDepTech()
				.setDate(appelDoffre.getAoDateDepTech());
		pan.getjDateChooserDateLimite().setDate(appelDoffre.getAoDateLine());
		pan.getjTextAreaCommentaire().setText(appelDoffre.getAoCommentaire());
		pan.getjTextAreaDescription().setText(appelDoffre.getAoDesc());
		pan.getjTextField2().setText(new DecimalFormat("0").format(appelDoffre.getAoOffreFinanc()));
		//String montant=new DecimalFormat("0").format(appelDoffre.getAoOffreFinanc())
		pan.getjTextFieldLead().setText(appelDoffre.getAoIdLead());
		pan.getjTextFieldReference().setText(appelDoffre.getAoRef());
		pan.getjTextFieldSeuilTechnique().setText(
				appelDoffre.getAoSeuilTech() + "");
		pan.getDateAchat().setDate(appelDoffre.getAoDateAchat());
		pan.getDateCreate().setDate(appelDoffre.getAoDateCreate());
		panelbas.removeAll();
		panelbas.add(pan, BorderLayout.SOUTH);
		validate();

	}

	public void mouseClicked(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub
		
	if(	getTableListeAppelDoffre().getRowSelectionAllowed()==true){
		
		boutonSupprimer.setEnabled(true);
		boutonModifier.setEnabled(true);
		
	}
	}

	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub
		
	}

}
